package com.atguigu.service.impl;

import com.atguigu.dao.BookDao;
import com.atguigu.dao.impl.BookDaoImpl;
import com.atguigu.pojo.Book;
import com.atguigu.pojo.Page;
import com.atguigu.service.BookService;

import java.util.List;

public  class BookServiceImpl implements BookService {
    BookDao bookDao=new BookDaoImpl();//这里面是sql,接受参数,组织sql,执行mysql查询;所以它是公共的的类,增删改查就用它的方法实现
    @Override
    public void addBook(Book book) {
        bookDao.addBook(book);
    }

    @Override
    public void deleteBookById(Integer id) {
        bookDao.deleteBookById(id);
    }

    @Override
    public void updateBook(Book book) {
        bookDao.updateBook(book);
    }

    @Override
    public Book queryBookById(Integer id) {
        Book book=bookDao.queryBookById(id);
        return book;
    }

    @Override
    public List<Book> queryBooks() {
        List<Book> list=bookDao.queryBooks();
        return list;
    }

    @Override
    public Page<Book> page(Integer pageNo, Integer pageSize) {
        Page<Book> page=new Page<>();

        page.setPagesize(pageSize);//当前页数据量
        Integer pageTotalCount=bookDao.queryForPageTotalCount();
        page.setPageTotalCount(pageTotalCount);// 总记录数
        Integer pageTotal=pageTotalCount/pageSize;
        if(pageTotalCount % pageSize>0){//余数大于0说明除不尽,页码要加1页
            pageTotal++;
        }
        page.setPageTotal(pageTotal);//总页码=总条目/每页的数据量

        System.out.println("pageNo 原来是 is:"+pageNo);
//        if(pageNo<1){//防止用户输入量太大
//            pageNo=1;
//        }else if(pageNo>pageTotal){
//            pageNo=pageTotal;
//        }
        page.setPageNo(pageNo);//当前页码

        System.out.println("pageNo 现在是 is:"+pageNo);
        System.out.println("pageTotal is:"+pageTotal);
        //要得到的是page的items
        Integer begin=(page.getPageNo()-1)*pageSize;
        List<Book> items=bookDao.queryForPageItems(begin,pageSize);
        page.setItems(items);
        return page;
    }

    @Override
    public Page pageByPrice(Integer pageNo, Integer pageSize, Integer min, Integer max) {
        Page<Book> page=new Page<>();

        page.setPagesize(pageSize);//当前页数据量
        Integer pageTotalCount=bookDao.queryForPageTotalCountByPrice(min,max);
        page.setPageTotalCount(pageTotalCount);// 总记录数
        Integer pageTotal=pageTotalCount/pageSize;
        if(pageTotalCount % pageSize>0){//余数大于0说明除不尽,页码要加1页
            pageTotal++;
        }
        page.setPageTotal(pageTotal);//总页码=总条目/每页的数据量

        System.out.println("pageNo 原来是 is:"+pageNo);
        page.setPageNo(pageNo);//当前页码

        System.out.println("pageNo 现在是 is:"+pageNo);
        System.out.println("pageTotal is:"+pageTotal);
        //要得到的是page的items
        Integer begin=(page.getPageNo()-1)*pageSize;
        List<Book> items=bookDao.queryForPageItemsByPrice(begin,pageSize,min,max);
        page.setItems(items);
        return page;
    }
}
